package net.freestu.sola.web.global;

import java.util.*;

/**
 * This class is used to create LinkHash for every spider.
 * The name of spider must be registered in the class. 
 * @author 秋刀鱼的滋味
 */
public class AllLinksHashtable{//OK
	
	private Map linkhash;
	private Map unlinkhash;
	
	private static AllLinksHashtable singleton;//单例特征1.
	//---------------------
    private AllLinksHashtable(){
		
    	linkhash=new HashMap();
    	unlinkhash=new HashMap();
	}
	//-------------------
	
    /**
     * 单例模式的方法
     */
    synchronized public static AllLinksHashtable getInstance(){

		  if(singleton==null){
			  
			  singleton=new AllLinksHashtable();
		  }
		  
		  return singleton;
	  }
		
	/**
	 * 将[name->linkhash]放入Map中
	 * LinkHash自动创建
	 * @param name
	 * @param lh
	 */
    synchronized public void put(String name){
		
		LinkHash lh=new LinkHash(name);
		linkhash.put(name, lh);	
	}
	
	/**
	 * 取出Linkhash
	 * @param name
	 * @return 
	 */
    synchronized public LinkHash get(String name){
		
		return (LinkHash)linkhash.get(name);
	}
    
	/**
	 * 放入不能链接的URL
	 */
    synchronized public void putun(String name){
		
		UnLinkHash lh=new UnLinkHash(name);
		unlinkhash.put(name, lh);	
		
	}
    
	/**
	 * 取出Linkhash
	 * @param name
	 * @return 
	 */
    synchronized public UnLinkHash getun(String name){
		
		return (UnLinkHash)unlinkhash.get(name);
	}
	
	public static void main(String[] args){
		
		AllLinksHashtable aht=AllLinksHashtable.getInstance();
		aht.put("cdut.edu.cn");//创建cdut.edu.cn哈希表。
		aht.put("sina.com");//...
		LinkHash lh1=aht.get("cdut.edu.cn");
		lh1.put("http://www.sina.com/");
		lh1.put("htttp://www.baidu.com/");//注意：这里自动识别重复的URL
		lh1.put("http://www.sina.com/");
		lh1.writeDataOut();
	}
}